home *** CD-ROM | disk | FTP | other *** search
/ CU Amiga Super CD-ROM 16 / CU Amiga Magazine's Super CD-ROM 16 (1997-10-16)(EMAP Images)(GB)[!][issue 1997-11].iso / CUCD / Graphics / Ghostscript / source / gsiparam.h < prev    next >
C/C++ Source or Header  |  1997-05-05  |  5KB  |  168 lines

  1. /* Copyright (C) 1996, 1997 Aladdin Enterprises.  All rights reserved.
  2.   
  3.   This file is part of Aladdin Ghostscript.
  4.   
  5.   Aladdin Ghostscript is distributed with NO WARRANTY OF ANY KIND.  No author
  6.   or distributor accepts any responsibility for the consequences of using it,
  7.   or for whether it serves any particular purpose or works at all, unless he
  8.   or she says so in writing.  Refer to the Aladdin Ghostscript Free Public
  9.   License (the "License") for full details.
  10.   
  11.   Every copy of Aladdin Ghostscript must include a copy of the License,
  12.   normally in a plain ASCII text file named PUBLIC.  The License grants you
  13.   the right to copy, modify and redistribute Aladdin Ghostscript, but only
  14.   under certain conditions described in the License.  Among other things, the
  15.   License requires that the copyright notice and this notice be preserved on
  16.   all copies.
  17. */
  18.  
  19. /* gsiparam.h */
  20. /* Image parameter definition */
  21. /* Requires gsmatrix.h */
  22.  
  23. #ifndef gsiparam_INCLUDED
  24. #  define gsiparam_INCLUDED
  25.  
  26. /* ---------------- Image parameters ---------------- */
  27.  
  28. /* Define an opaque type for a color space. */
  29. #ifndef gs_color_space_DEFINED
  30. #  define gs_color_space_DEFINED
  31. typedef struct gs_color_space_s gs_color_space;
  32. #endif
  33.  
  34. /*
  35.  * Define the structure for specifying image data.  It follows closely
  36.  * the discussion on pp. 219-223 of the PostScript Language Reference Manual,
  37.  * Second Edition, with the following exceptions:
  38.  *
  39.  *    ColorSpace and ImageMask are added members from PDF.
  40.  *
  41.  *    DataSource and MultipleDataSources are not members of this
  42.  *    structure, but are arguments of gs_image_init.
  43.  *
  44.  *    adjust, CombineWithColor, and HasAlpha are not PostScript or
  45.  *    PDF standard (see the RasterOp section of language.doc for a
  46.  *    discussion of CombineWithColor).
  47.  */
  48. typedef enum {
  49.         /* Single plane, chunky pixels. */
  50.     gs_image_format_chunky = 0,
  51.         /* num_components planes, chunky components. */
  52.     gs_image_format_component_planar = 1,
  53.         /* BitsPerComponent * num_components planes, 1 bit per plane */
  54.         /****** NOT SUPPORTED YET, DO NOT USE ******/
  55.     gs_image_format_bit_planar = 2
  56. } gs_image_format_t;
  57.  
  58. typedef struct gs_image_s {
  59.         /*
  60.          * Define the width of source image in pixels.
  61.          */
  62.     int Width;
  63.         /*
  64.          * Define the height of source image in pixels.
  65.          */
  66.     int Height;
  67.         /*
  68.          * Define the transformation from user space to image space.
  69.          */
  70.     gs_matrix ImageMatrix;
  71.         /*
  72.          * Define B, the number of bits per pixel component.
  73.          * Currently this must be 1 for masks.
  74.          */
  75.     int BitsPerComponent;
  76.         /*
  77.          * Define the source color space (must be NULL for masks).
  78.          */
  79.     const gs_color_space *ColorSpace;
  80.         /*
  81.          * Define the linear remapping of the input values.
  82.          * For the I'th pixel component, we start by treating
  83.          * the B bits of component data as a fraction F between
  84.          * 0 and 1; the actual component value is then
  85.          * Decode[I*2] + F * (Decode[I*2+1] - Decode[I*2]).
  86.          * For masks, only the first two entries are used;
  87.          * they must be 1,0 for write-0s masks, 0,1 for write-1s.
  88.          */
  89. #ifdef DPNEXT
  90.     float Decode[10];    /* 4 colors + alpha */
  91. #else
  92.     float Decode[8];
  93. #endif
  94.         /*
  95.          * Define whether to smooth the image.
  96.          */
  97.     bool Interpolate;
  98.         /*
  99.          * Define whether this is a mask or a solid image.
  100.          */
  101.     bool ImageMask;
  102.         /***
  103.          *** The following are not PostScript standard.
  104.          ***/
  105.         /*
  106.          * Define whether to expand each destination pixel, to make
  107.          * masked characters look better (only used for masks).
  108.          */
  109.     bool adjust;
  110.         /*
  111.          * Define whether to use the drawing color as the
  112.          * "texture" for RasterOp.  For more information,
  113.          * see the discussion of RasterOp in language.doc.
  114.          */
  115.     bool CombineWithColor;
  116. #ifdef DPNEXT
  117.         /*
  118.          * Define whether there is an additional component providing
  119.          * alpha information for each pixel, in addition to (and
  120.          * following) the components implied by the color space.
  121.          * For masks, HasAlpha must be false.
  122.          */
  123.     bool HasAlpha;
  124. #endif
  125. } gs_image_t;
  126.  
  127. /*
  128.  * Define procedures for initializing a gs_image_t to default values.
  129.  * For masks, write_1s = false paints 0s, write_1s = true paints 1s.
  130.  * This is consistent with the "polarity" operand of the PostScript
  131.  * imagemask operator.
  132.  *
  133.  * Note that because gs_image_t may add more members in the future, all
  134.  * clients constructing gs_image_t values *must* start by initializing
  135.  * the value by calling one of the following procedures.
  136.  */
  137. void
  138.   gs_image_t_init_gray(P1(gs_image_t *pim)),
  139.   gs_image_t_init_color(P1(gs_image_t *pim)),/* general color, initially RGB */
  140.   gs_image_t_init_mask(P2(gs_image_t *pim, bool write_1s));
  141.  
  142. /****** REMAINDER OF FILE UNDER CONSTRUCTION. PROCEED AT YOUR OWN RISK. ******/
  143.  
  144. #if 0
  145.  
  146. /* ---------------- Services ---------------- */
  147.  
  148. /*
  149. In order to make the driver's life easier, we provide the following callback
  150. procedure:
  151. */
  152.  
  153. int gx_map_image_color(P5(gx_device *dev,
  154.               const gs_image_t *pim,
  155.               const gx_color_rendering_info *pcri,
  156.               const uint components[4],
  157.               gx_drawing_color *pdcolor));
  158.  
  159. /*
  160. Map a source color to a drawing color.  The components are simply the pixel
  161. component values from the input data, i.e., 1 to 4 B-bit numbers from the
  162. source data.  Return 0 if the operation succeeded, or a negative error code.
  163. */
  164.  
  165. #endif    /****************************************************************/
  166.  
  167. #endif                    /* gsiparam_INCLUDED */
  168.